package chwgigs;

public class J15_OOP1 {

	//<객체지향 개발 기법>
	
	//OOP: 객체를 기반으로 프로그램을 작성하는 것
	//OOP 언어로 응용 프로그램을 개발하는 경우 , 문제해결을 위해 실제 상황과 유사한 모델을 만들어야 함
    // 예를 들어 직원 세금을 계산하는 프로그램 작성			
	// 프로그램에서 회사를 표현하는 회사객체가 필요 
	// 또한 직원을 나타내는 직원 객체, 세금을 나타내는 세금 객체도 필요하다.
	// 회사 ,직원 ,세금 객체를 자바 프로그램에서 코드로 나타내는 방법에 대해 알아본다
	 
	//  모든 객체에는 2가지 성질이 있음
	// [속성 property], 객체가 할 수 있는 [행동 action]
	// 현실 세계에 존재하는 객체를 자바 언어로 가져오는 경우에도 '속성'과 '행위'가 있어야 함
	// 자바에서 속성은 'field', 행위는 'method' 라 한다. 
	// 단, 필드와 메서드는 둘 중 하나만 존재 해도 된다.
	// 자바 객체를 만드는 방법은?- 설계도를 이용한다.
	// 예를 들어 자동차라는 객체를 잘 만드려면 먼저 '좋은 설계도'가 있어야 한다.
	// OOP 에선 객체를 만들어 주는 설계도를 '클래스'라 한다. 
	
	//  클래스class 는 동일한 유형의 객체를 만드는 청사진/ 설계도 또는 템플릿 이다.
	//  붕어빵=객체 붕어빵 틀=클래스
	//  밀가루 ,팥 - 속성 
	//  클래스는 당신이 만드려는 객체의 종류를 결정하므로 매우 중요하다. 
	
	// 요약하자면 '클래스'는 프로그래머로 하여금 문제의 추상화를 만들 수 있게 해주는 OOP 도구임 
	// OOP 에서 추상화 는 실제 객체를 표현하기 위해 객체에서 핵심적인 개념 또는 기능을 뽑아 프로그래밍 객체로 만드는 
	// 행위를 말한다. 
	//클래스는 자바 프로그램의 기본 뼈대 이다 . 자바 초보자는 클래스를 작성할때 클래스 이름 , 필드, 메서드 등을 고려 할 것
	
	// 클래스 만들기
	// class 클래스 이름{
	//         클래스 몸체(필드, 메서드)
    // } 	
    // 클래스 이름은 반드시 대문자로 시작 
	// 클래스 정의시 클래스 이름과 파일 이름은 동일해야 함 
	// 클래스 내에 선언된 변수를 필드field라 한다. 
	
	public static void main(String[] args) {
        // 클래스를 사용하지 않고 학생 객체 생성
		String name="채희원";
		int stdno=123456789;
		String addr="서울 동작구 사당동";
		int mp=1234567890;
		
		String name2="채희자";
		int stdno2=123456789;
		String addr2="서울 서초구 방배동";
		int mp2=345678901;
		
		
		
		// 클래스를 이용해서 학생 객체 생성
		  Student heewon=new Student();
		  heewon.name="희원";
          heewon.stdno=123456789;
		  heewon.addr="서울시 동작구 사당동";
		  heewon.mp=123456789;
		  
		  Student heeza=new Student();
		  heeza.name="희자";
		  heeza.stdno=123456789;
		  heeza.addr="서울 서초구 방배동";
		  heeza.mp=1234567890; 
		  
	     
	
		  
		  
	} //main

	} //class

     // 학생 클래스 정의
// 상품 (Product) 클래스
//  상품번호, 상품명, 가격, 종류, 제조사
  class Product{
 	 String ppw;
 	 String pname;
 	     int price;
 	 String ptype;
 	 String maker;
  } 
 	
//  테란 유닛(TerranUnit)을 클래스로 정의
//  생명력 에너지 방어력 광물 베스핀 보급품 생산시간
   class TerranUnit{
 	  int energy;
 	  int time ;
 	  int money;
 	  String supply;
 	  String gas;
 	  int mineral;
 	  int life;
 	  int shield;
 	  int maketime;
   }
   // 고객(Customer) 클래스 
   // 아이디, 비밀번호, 이름 ,주소, 전화 번호, 이메일
     class Customer{
    	 String userid;
    	 String passwd;
    	 String name;
    	 String addr;
    	 String mp;
    	 String email;
    	
     }
  
   
   class Student{
	   
	   //필드 선언
	   String name;
	   int stdno;
	   String addr;
	   int mp; 
 
//생성자 추가 =객체를 초기화하는데 사용
 public Student(){
	 stdno=123456789;
	 name="채희원";
	 addr="서울 동작구 사당동";	
	 mp=1234567890;


     
     
 

 }
 
   }

